//与用户注册、用户登录、退出登录相关的代码
//导入express包
const express = require('express');
//导入md5包
const md5 = require('md5')
//导入users集合对象
const UserModel = require('../../models/UserModel')
//获取date-fns包的format方法
const { format } = require('date-fns')
//导入jsonwebtoken包
const jwt = require('jsonwebtoken')


//创建路由对象
const router = express.Router();

//处理用户提交的注册信息
router.post('/reg', (req, res) => {
    //获取用户注册时的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //获取用户填写的注册信息
    const { username, password, email } = req.body
    //将用户的注册信息存入数据库users集合中
    UserModel.create({
        username: username,
        password: md5(password),
        email: email,
        time: time
    }, (err, data) => {
        if (err) {
            res.json({
                code: '2001',
                msg: '保存注册信息失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '保存注册信息成功...',
            data: data
        })
    })
})

//处理用户提交的登录信息
router.post('/login', (req, res) => {
    //先获取用户填写的登录信息
    const { username, password } = req.body
    //后校验登录信息是否匹配(根据查询条件来校验)
    UserModel.findOne({ username: username, password: md5(password) }, (err, data) => {
        if (err) {
            res.json({
                code: '2002',
                msg: '账号或密码错误...',
                data: null
            })
            return
        }
        //获取用户当前计算机的时间
        const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
        //登录成功后生成token
        const token = jwt.sign({
            username: username,
            time: time
        }, 'atguigu', { expiresIn: 60 * 60 })

        res.json({
            code: '0000',
            msg: '登录成功...',
            data: token
        })
    })
})

//数据暴露
module.exports = router;